/*
 * @Description: 类的简介
 * @notes: 
 * @Author: 台火山
 * @Date: 2024-03-22 18:08:06
 * @LastEditors: 台火山
 * @LastEditTime: 2024-03-22 18:25:56
 */
// 使用 class 关键字来定义一个类
/**
 * 对象中主要包含两个部分：
 *      属性
 *      方法
 * 
 */
class Person {
    /**
     *  直接定义的属性是实例属性，需要通过对象的实例去访问
     *      const per = new Person();
     *      per.name
     * 
     *  使用 static 开头的属性是静态属性(类属性)，可以直接通过类去访问
     *      Person.age
     * 
     *  readonly 开头的属性表示一个只读的属性无法修改
    */

    // 定义实例属性
    // readonly name: string = "孙悟空";
    // 在属性前使用 static 关键字可以定义类属性(静态属性)
    // static readonly age: number = 18;

    name = '孙悟空';
    age = 18;

    /**
     *  定义方法
     *  如果方法以 static 开头则方法就是类方法，可以直接通过类去调用
     *  反之
     */
    sayHello() {
        console.log('大家好');

    }
}
const per = new Person;

console.log(per);

// 实例属性可以读可以写
// console.log(per.name);
// per.name = 'tom';
// console.log(per.name);

// 调用类的方法
// per.sayHello();
//  前缀添加 static 
// Person.sayHello();